Введение в программирование

Введение в языки программирования C и С++

Введение в разработку программного обеспечения

Установка IDE (Интегрированной Среды Разработки)

Компиляция вашей первой программы

Режимы конфигурации «Debug» и «Release»

Решения самых распространенных проблем


Структура программ

Комментарии

Переменные, Инициализация и Присваивание

cout, cin и endl

Функции

Параметры и аргументы функций

Почему функции — полезны, и как их эффективно использовать?

Локальная область видимости

Ключевые слова и идентификаторы

Операторы

Базовое форматирование кода

Прототип функции и Предварительное объявление

Многофайловые программы

Заголовочные файлы

Директивы препроцессора

Header guards и #pragma once

Конфликт имен и std namespace

Разработка ваших первых программ

Отладка программ: степпинг и точки останова

Отладка программ: стек вызовов и отслеживание переменных







Инициализация, присваивание и объявление переменных

Тип данных void

Размер типов данных

Целочисленные типы данных: short, int и long

Фиксированный размер целочисленных типов данных

Типы данных с плавающей точкой: float, double и long double

Логический тип данных bool

Символьный тип данных char

Литералы и магические числа

const, constexpr и символьные константы




Приоритет операций и правила ассоциативности

Арифметические операторы

Инкремент, декремент и побочные эффекты

Условный тернарный оператор, оператор sizeof и Запятая

Операторы сравнения

Логические операторы: И, ИЛИ, НЕ

Конвертация чисел из двоичной системы в десятичную и наоборот

Побитовые операторы

Битовые флаги и битовые маски







Блоки стейтментов (составные операторы)

Локальные переменные, область видимости и продолжительность жизни

Глобальные переменные

Почему глобальные переменные – зло?

Статические переменные

Связи, область видимости и продолжительность жизни

Пространства имен

using-стейтменты

Неявное преобразование типов данных

Явное преобразование типов данных

Введение в std::string

Перечисления

Классы enum

Псевдонимы типов: typedef и type alias

Структуры

Вывод типов: ключевое слово auto




Операторы управления потоком выполнения программ

Операторы условного ветвления if/else

Оператор switch

Оператор goto

Цикл while

Цикл do while

Цикл for

Операторы break и continue

Генерация случайных чисел

Обработка некорректного пользовательского ввода

Введение в тестирование кода




Массивы

Фиксированные массивы

Массивы и циклы

Сортировка массивов методом выбора

Многомерные массивы

Строки C-style

Указатели

Нулевые указатели

Указатели и массивы

Адресная арифметика и индексация массивов

Символьные константы строк C-style

Динамическое выделение памяти

Динамические массивы

Указатели и const

Ссылки

Ссылки и const

Оператор доступа к членам через указатель

Цикл foreach

Указатели типа void

Указатели на указатели

Введение в std::array

std::vector (векторы)







Параметры и аргументы функций

Передача по значению

Передача по ссылке

Передача по адресу

Возврат значений по ссылке, по адресу и по значению

Встроенные функции

Перегрузка функций

Параметры по умолчанию

Указатели на функции

Стек и Куча

Ёмкость вектора

Рекурсия и Числа Фибоначчи

Обработка ошибок, cerr и exit()

assert и static_assert

Аргументы командной строки

Эллипсис




Введение в ООП

Классы, Объекты и Методы

Спецификаторы доступа public и private

Инкапсуляция, Геттеры и Сеттеры

Конструкторы

Список инициализации членов класса

Инициализация нестатических членов класса

Делегирующие конструкторы

Деструкторы

Скрытый указатель *this

Классы и заголовочные файлы

Классы и const

Статические переменные-члены класса

Статические методы класса

Дружественные функции и классы

Анонимные объекты

Вложенные типы данных в классах

Измерение времени выполнения (тайминг) кода




Введение в перегрузку операторов

Перегрузка операторов через дружественные функции

Перегрузка операторов через обычные функции

Перегрузка операторов ввода и вывода

Перегрузка операторов через методы класса

Перегрузка унарных операторов +, — и логического НЕ

Перегрузка операторов сравнения

Перегрузка операторов инкремента и декремента

Перегрузка оператора индексации []

Перегрузка оператора ()

Перегрузка операций преобразования типов данных

Конструктор копирования

Копирующая инициализация

Конструкторы преобразования, ключевые слова explicit и delete

Перегрузка оператора присваивания

Поверхностное и глубокое копирование







Типы связей между объектами

Композиция объектов

Агрегация

Ассоциация

Зависимость

Контейнерные классы

Список инициализации std::initializer_list




Введение в Наследование

Базовое наследование

Порядок построения дочерних классов

Конструкторы и инициализация дочерних классов

Наследование и спецификатор доступа protected

Добавление нового функционала в дочерний класс

Переопределение методов родительского класса

Сокрытие методов родительского класса

Множественное наследование




Указатели, Ссылки и Наследование

Виртуальные функции и Полиморфизм

Модификаторы override и final

Виртуальные деструкторы и Виртуальное присваивание

Раннее и Позднее Связывания

Виртуальные таблицы

Чистые виртуальные функции, Интерфейсы и Абстрактные классы

Виртуальный базовый класс

Обрезка объектов

Оператор dynamic_cast

Вывод объектов классов через оператор вывода




Шаблоны функций

Экземпляры шаблонов функций

Шаблоны классов

Параметр non-type в шаблоне

Явная специализация шаблона функции

Явная специализация шаблона класса

Частичная специализация шаблона

Частичная специализация шаблонов и Указатели







Зачем они нужны?

Операторы throw, try и catch

Исключения, Функции и Раскручивание стека

Непойманные исключения и обработчики catch-all

Классы-Исключения и Наследование

Повторная генерация исключений

Функциональный try-блок

Недостатки и опасности использования исключений




Умные указатели и Семантика перемещения

Ссылки r-value

Конструктор перемещения и Оператор присваивания перемещением

Функция std::move()

Умный указатель std::unique_ptr

Умный указатель std::shared_ptr

Умный указатель std::weak_ptr




Стандартная библиотека шаблонов (STL)

Контейнеры STL

Итераторы STL

Алгоритмы STL


Строковые классы std::string и std::wstring

Создание, уничтожение и конвертация std::string

Длина и ёмкость std::string

Конвертация std::string в строки C-style

Присваивание и перестановка значений с std::string

Добавление к std::string

Вставка символов и строк в std::string





Потоки ввода и вывода

Функционал класса istream

Форматирование вывода

Потоковые классы и Строки

Состояния потока и валидация пользовательского ввода

Базовый файловый ввод и вывод

Рандомный файловый ввод и вывод

